import car_green from '@/assets/car/car_green_icon.png'
import car_grey from '@/assets/car/car_grey_icon.png'
import moment from 'moment'
import momentDurationFormatSetup from 'moment-duration-format'
momentDurationFormatSetup(moment)

export function switchPositionType(type) {
  switch (type) {
    case 'un':
      return '未知'
    case 'lbs':
      return '基站定位'
    case 'gps':
      return '卫星定位'
    case 'wifi':
      return 'WIFI定位'
    default:
      return '未知'
  }
}

export function deviceStatus(type: string) {
  switch (type) {
    case 'online':
      return '在线'
    case 'offline':
      return '离线'
  }
}
export function deviceStatusType(type: string) {
  switch (type) {
    case 'online':
      return 'primary'
    case 'offline':
      return 'info'
  }
}

export function deviceStatusIcon(type: string) {
  switch (type) {
    case 'online':
      return car_green
    case 'offline':
      return car_grey
  }
}

export function computeSubTitle(st) {
  if (st.connectionStatus === 'online') {
    if (st.positionUpdateTime === null) {
      return '未定位'
    }
    let dis = Math.floor((new Date().getTime() - new Date(st.positionUpdateTime).getTime()) / 1000)
    if (dis <= 300 && st.speed > 0) {
      return (st.speed * 1.852).toFixed(2) + 'km/h'
    } else if (dis < 10) {
      return '静止'
    } else if (dis < 60) {
      return '静止' + dis + '秒'
    } else if (dis < 3600) {
      return '静止' + Math.floor(dis / 60) + '分钟' + (dis % 60) + '秒'
    } else if (dis < 24 * 60 * 60) {
      return '静止' + Math.floor(dis / 3600) + '小时' + Math.floor((dis % 3600) / 60) + '分钟'
    } else {
      return '静止' + Math.floor(dis / 86400) + '天' + Math.floor((dis % 86400) / 3600) + '小时'
    }
  } else if (st.connectionStatus === 'offline') {
    if (st.signalUpdateTime === null) {
      return '未上线'
    }
    let dis2 = Math.floor((new Date().getTime() - new Date(st.signalUpdateTime).getTime()) / 1000)
    if (dis2 < 10) {
      return '离线'
    } else if (dis2 < 60) {
      return '离线' + dis2 + '秒'
    } else if (dis2 < 3600) {
      return '离线' + Math.floor(dis2 / 60) + '分钟' + (dis2 % 60) + '秒'
    } else if (dis2 < 24 * 60 * 60) {
      return '离线' + Math.floor(dis2 / 3600) + '小时' + Math.floor((dis2 % 3600) / 60) + '分钟'
    } else {
      return '离线' + Math.floor(dis2 / 86400) + '天' + Math.floor((dis2 % 86400) / 3600) + '小时'
    }
  } else if (st.connectionStatus === 'expired') {
    let dis3 = Math.floor((new Date().getTime() - new Date(st.signalUpdateTime).getTime()) / 1000)
    if (dis3 < 10) {
      return '过期'
    } else if (dis3 < 60) {
      return '过期' + dis3 + '秒'
    } else if (dis3 < 3600) {
      return '过期' + Math.floor(dis3 / 60) + '分钟' + (dis3 % 60) + '秒'
    } else if (dis3 < 24 * 60 * 60) {
      return '过期' + Math.floor(dis3 / 3600) + '小时' + Math.floor((dis3 % 3600) / 60) + '分钟'
    } else {
      return '过期' + Math.floor(dis3 / 86400) + '天' + Math.floor((dis3 % 86400) / 3600) + '小时'
    }
  } else {
    return '设备未激活'
  }
}

/**
 * 速度转换
 * @param val
 */
export function speedConvert(val) {
  return val ? (val * 1.852).toFixed(2) + 'km/h' : '0km/h'
}

export function mileageConversion(val) {
  return (val / 1000).toFixed(1) + 'km'
}

/**
 * 解析jt1078Avset
 */
export function jt1078AvsetAnalysis(cnt: number, val?: string): any[] {
  if (!cnt) {
    return []
  }
  // console.log(val)
  let ret: any[] = []
  if (val) {
    let sets = val.split('|')
    for (let i = 0; i < cnt; i++) {
      if (i >= sets.length) {
        break
      }
      if (sets[i] === '*') {
        continue
      }
      if (!sets[i]) {
        ret.push({ channel: i + 1, name: `通道${i + 1}` })
      } else {
        ret.push({ channel: i + 1, name: sets[i] })
      }
    }
    // console.log(ret)
  } else {
    for (let i = 0; i < cnt; i++) {
      ret.push({ channel: i + 1, name: `通道${i + 1}` })
    }
  }
  return ret
}

export function formatDuration(val) {
  if (val < 60) {
    // 不满一分钟展示秒数
    return val
  } else if (val < 3600) {
    // 满一分钟展示分秒
    // @ts-ignore
    return moment.duration(val, 'seconds').format('mm:ss', { trim: false })
  } else {
    // 满一小时展示时分秒
    // @ts-ignore
    return moment.duration(val, 'seconds').format('HH:mm:ss', { trim: false })
  }
}

/**
 * 日期转换
 * @param timeLong
 */
export function timeFormat(timeLong: number) {
  const timeStamp = Math.floor(timeLong / 1000)
  const days = Math.floor(timeStamp / (24 * 3600))
  const yu = timeStamp % (24 * 3600)
  const hours = Math.floor(yu / 3600)
  const yu2 = yu % 3600
  const minutes = Math.floor(yu2 / 60)
  const seconds = yu2 % 60
  return (
    (days === 0 ? '' : days + '天') +
    (hours === 0 ? '' : hours + '时') +
    (minutes === 0 ? '' : minutes + '分') +
    (seconds === 0 ? '' : seconds + '秒')
  )
}

export function bytesToSize(bytes: number) {
  const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB']
  if (bytes === 0) {
    return '0 Bytes'
  }
  const i = Math.floor(Math.log(bytes) / Math.log(1024))
  return (bytes / Math.pow(1024, i)).toFixed(2) + ' ' + sizes[i]
}
